[AWS] VGW を別 VPC に付け替えしたときの VPN 接続の挙動をみてみた
こんにちは、菊池です。
AWS上のプライベートネットワークであるVPCでは、VPN接続することで、オンプレミス環境とプライベートな接続が可能です。
このVPN接続、正確には、オンプレミスのルーターであるカスタマーゲートウェイ(CGW)と、AWSの仮想プライベートゲートウェイ(VGW)がIPSec VPNで接続し、そのVGWをVPCと紐付け(アタッチ)することで実現されます。
CGW ---(VPN)--- VGW --- VPC
であれば、VPN接続された状態のVGWを、VPCから切り離し、他のVPCに付け替えることも可能ではないかと思い、検証してみました。
やってみた
前提条件
- VPC1(VGW移行元)CIDR:172.16.0.0/24
- VPC2(VGW移行先)CIDR:172.16.0.0/24
- オンプレ側CIDR:10.10.10.0/24
- VPNルーティング設定:Dynamic(BGP)
- カスタマーゲートウェイ(CGW)ルータ:Cisco ISR
初期状態(VPC1にアタッチ)
まずは最初の状態です。VPC1にVGWがアタッチされ、VPNが接続されています。
VPC1のルートテーブルで、オンプレ側ネットワーク10.10.10.0/24へのルートを受信しています。
カスタマーゲートウェイルーター側の状態です。VPNセッションがアップしています。
#show ip bgp summary BGP router identifier 192.168.1.253, local AS number 65000 BGP table version is 5, main routing table version 5 2 network entries using 288 bytes of memory 3 path entries using 240 bytes of memory 3/2 BGP path/bestpath attribute entries using 480 bytes of memory 1 BGP AS-PATH entries using 24 bytes of memory 0 BGP route-map cache entries using 0 bytes of memory 0 BGP filter-list cache entries using 0 bytes of memory BGP using 1032 total bytes of memory BGP activity 2/0 prefixes, 3/0 paths, scan interval 60 secs Neighbor V AS MsgRcvd MsgSent TblVer InQ OutQ Up/Down State/PfxRcd 169.254.24.77 4 10124 30 31 5 0 0 00:04:11 1 169.254.27.117 4 10124 32 33 5 0 0 00:04:24 1
AWS側のルート情報、172.16.0.0/24を受信しています。
#show ip bgp BGP table version is 5, local router ID is 192.168.1.253 Status codes: s suppressed, d damped, h history, * valid, > best, i - internal, r RIB-failure, S Stale, m multipath, b backup-path, f RT-Filter, x best-external, a additional-path, c RIB-compressed, Origin codes: i - IGP, e - EGP, ? - incomplete RPKI validation codes: V valid, I invalid, N Not found Network Next Hop Metric LocPrf Weight Path *> 10.10.10.0/24 0.0.0.0 0 32768 i *> 172.16.0.0/24 169.254.24.77 100 0 10124 i * 169.254.27.117 200 0 10124 i
VGWをデタッチ
それでは、VPC1から、VGWをデタッチしてみます。
デタッチしました。
カスタマーゲートウェイルーターで、BGPセッションの状態をみてみます。
#show ip bgp summary BGP router identifier 192.168.1.253, local AS number 65000 BGP table version is 5, main routing table version 5 2 network entries using 288 bytes of memory 3 path entries using 240 bytes of memory 3/2 BGP path/bestpath attribute entries using 480 bytes of memory 1 BGP AS-PATH entries using 24 bytes of memory 0 BGP route-map cache entries using 0 bytes of memory 0 BGP filter-list cache entries using 0 bytes of memory BGP using 1032 total bytes of memory BGP activity 2/0 prefixes, 3/0 paths, scan interval 60 secs Neighbor V AS MsgRcvd MsgSent TblVer InQ OutQ Up/Down State/PfxRcd 169.254.24.77 4 10124 48 50 5 0 0 00:07:17 1 169.254.27.117 4 10124 51 52 5 0 0 00:07:31 1
セッションは2つともアップされたままで維持されています。しばらくすると、以下のメッセージがログに出力されました。
#debug ip bgp updates BGP updates debugging is on for address family: IPv4 Unicast *Apr 14 05:26:38.685: BGP(0): 169.254.24.77 rcv UPDATE about 172.16.0.0/24 -- withdrawn *Apr 14 05:26:38.685: BGP(0): Revise route installing 1 of 1 routes for 172.16.0.0/24 -> 169.254.27.117(global) to main IP table *Apr 14 05:26:38.685: BGP(0): (base) 169.254.24.77 send UPDATE (format) 172.16.0.0/24, next 169.254.24.78, metric 200, path 10124 *Apr 14 05:26:38.733: BGP(0): 169.254.27.117 rcv UPDATE about 172.16.0.0/24 -- withdrawn *Apr 14 05:26:38.733: BGP(0): no valid path for 172.16.0.0/24 *Apr 14 05:26:38.733: BGP: topo global:IPv4 Unicast:base Remove_fwdroute for 172.16.0.0/24 *Apr 14 05:27:08.569: BGP(0): (base) 169.254.24.77 send unreachable (format) 172.16.0.0/24
BGPの経路がアップデートされ、172.16.0.0/24がRemoveされています。VPC1を切り離したことによる経路の更新がされたようです。
BGPの経路情報を見ると、受信した経路は無しになっています。
#show ip bgp BGP table version is 7, local router ID is 192.168.1.253 Status codes: s suppressed, d damped, h history, * valid, > best, i - internal, r RIB-failure, S Stale, m multipath, b backup-path, f RT-Filter, x best-external, a additional-path, c RIB-compressed, Origin codes: i - IGP, e - EGP, ? - incomplete RPKI validation codes: V valid, I invalid, N Not found Network Next Hop Metric LocPrf Weight Path *> 10.10.10.0/24 0.0.0.0 0 32768 i
VPC1側のルートテーブルを見ると、こちらもBGPで受信していたルートは削除されています。
VGWをVPC2にアタッチ
それでは、切り離したVGWを、VPC2にアタッチしてみます。
VPC2にアタッチしました。
BGPセッションには変化はなく、アップしたまま維持されています。
#show ip bgp summary BGP router identifier 192.168.1.253, local AS number 65000 BGP table version is 7, main routing table version 7 1 network entries using 144 bytes of memory 1 path entries using 80 bytes of memory 1/1 BGP path/bestpath attribute entries using 160 bytes of memory 0 BGP route-map cache entries using 0 bytes of memory 0 BGP filter-list cache entries using 0 bytes of memory BGP using 384 total bytes of memory BGP activity 2/1 prefixes, 3/2 paths, scan interval 60 secs Neighbor V AS MsgRcvd MsgSent TblVer InQ OutQ Up/Down State/PfxRcd 169.254.24.77 4 10124 68 71 7 0 0 00:10:22 0 169.254.27.117 4 10124 70 73 7 0 0 00:10:35 0
しばらくすると、BGPルートのアップデートがログに表示されました。
*Apr 14 05:30:19.741: BGP(0): 169.254.24.77 rcvd UPDATE w/ attr: nexthop 169.254.24.77, origin i, metric 100, merged path 10124, AS_PATH *Apr 14 05:30:19.741: BGP(0): 169.254.24.77 rcvd 172.16.0.0/24 *Apr 14 05:30:19.741: BGP(0): Revise route installing 1 of 1 routes for 172.16.0.0/24 -> 169.254.24.77(global) to main IP table *Apr 14 05:30:19.741: BGP(0): 169.254.24.77 NEXT_HOP is on same subnet as the bgp peer and set to 169.254.24.77 for net 172.16.0.0/24, flags 200, sb: A9FE184C, mask: FFFFFFFC *Apr 14 05:30:19.741: BGP(0): (base) 169.254.24.77 send UPDATE (format) 172.16.0.0/24, next 169.254.24.77, metric 100, path 10124 *Apr 14 05:30:36.165: BGP(0): 169.254.27.117 rcvd UPDATE w/ attr: nexthop 169.254.27.117, origin i, metric 200, merged path 10124, AS_PATH
VPC2に紐付けたことでルートが更新されたようです。BGPルートを見ると、172.16.0.0/24を受信しています。
#show ip bgp BGP table version is 8, local router ID is 192.168.1.253 Status codes: s suppressed, d damped, h history, * valid, > best, i - internal, r RIB-failure, S Stale, m multipath, b backup-path, f RT-Filter, x best-external, a additional-path, c RIB-compressed, Origin codes: i - IGP, e - EGP, ? - incomplete RPKI validation codes: V valid, I invalid, N Not found Network Next Hop Metric LocPrf Weight Path *> 10.10.10.0/24 0.0.0.0 0 32768 i * 172.16.0.0/24 169.254.27.117 200 0 10124 i *> 169.254.24.77 100 0 10124 i
VPC2側のルートを確認します。まずは、ルートテーブルで、ルート伝播を有効化する必要があります。(VGWアタッチ前にはできません)
ルート伝播を有効にすると、すぐにオンプレ側の10.10.10.0/24が有効化されました。
まとめ
ということで、今回の検証でわかったことです。
- VGWをVPCからデタッチ・他のVPCにアタッチをすると
- VPNセッション/BGPセッションは維持される
- VPCが切り離し、割り当てされることでBGPのルートは自動でアップデートされる
VPCの移行などで、オンプレ側ルータの設定を変えずにVPNを維持したい場合にはVGWの付け替えのみで、影響を最小限に移行することができそうです。
その気になれば、オンプレ側には全く意識させずに、別の環境へ移行するということもできます。高度に仮想化・ソフトウェア化されたAWSのネットワークだからこそできることではないでしょうか。